It is previously known to use transform domain coding schemes, such as the one described in [1]. Below, a high-level overview of such transform domain coding schemes will be given.
On a block-by-block basis, the waveform to be encoded is transformed to the frequency domain. One commonly used transform used for this purpose is the so-called Modified Discrete Cosine Transform (MDCT). The frequency domain transform vector thus obtained is split into spectrum envelope (slowly varying energy) and spectrum residual. The spectrum residual is obtained by normalizing the obtained frequency domain vector with said spectrum envelope. The spectrum envelope is quantized, and quantization indices are transmitted to the decoder. Next, the quantized spectrum envelope is used as an input to a bit distribution algorithm, and bits for encoding of the residual vectors are distributed based on the characteristics of the spectrum envelope. As an outcome of this step, a certain number of bits are assigned to different parts of the residual (residual vectors or “sub-vectors”). Some residual vectors do not receive any bits and have to be noise-filled or bandwidth-extended; an example of this is illustrated in FIG. 1. Typically, the coding of residual vectors is a two step procedure; first, the amplitudes of the vector elements are coded, and next the sign (which should not be confused with “phase”, which is associated with, for example, Fourier transforms) of the non-zero elements is encoded. An example of this is illustrated in FIG. 2. Quantization indices for the residual's amplitude and sign are transmitted to the decoder, where residual and spectrum envelope are combined, and finally transformed back to time domain.
However, when the number of bits available for the encoding are limited, such as at low or moderate bit-rates, the result of the encoding may be unsatisfactory.